home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr45 / gravis.zip / TECH7.TXT < prev    next >
Text File  |  1993-01-22  |  4KB  |  75 lines

  1.  
  2. TITLE:      Advanced Gravis Tech Note #7
  3. AREA:       16 BIT DMA
  4. DATE:       January 20, 1993
  5. KEY WORDS:  OPTI CHIPSET 16 BIT DMA CRASH
  6.  
  7. SUBJECT: Faulty DMA controllers
  8.  
  9. There is a known problem accessing 16 bit DMA channels on certain brands
  10. of chipsets, including SOME models of OPTI.
  11.  
  12. The way to tell if you have this problem is by setting the GUS DMA channel
  13. to one of the 16 bit DMAs, 5, 6 or 7.  Try playing some digital audio
  14. samples.  You may have to run them 5-10 times to make sure there are
  15. no problems.  If you get a PARITY error set the DMA channel to an 8
  16. bit DMA such as 1 or 3.  Play some more digital audio samples.  If you do
  17. not get another parity error then you probably have a faulty DMA controller.
  18.  
  19. The are a few ways to fix this problem.  First, you can replace your
  20. motherboard.  Remember a motherboard without CPU should only be a few
  21. hundred dollars.  It is the CPU that cost so much, not the motherboard.
  22. If this is not an alternative and you can not live with an 8 bit DMA channel,
  23. you may try running the program OPTIFIX that may be found in GUS0013.ZIP
  24. on the Gravis BBS (604)431-5927.
  25.  
  26. What follows is a detailed description of the problem.
  27.  
  28. In the past 4 months or so, we have seen a rash of systems with 386 and 486
  29. motherboards that crash whenever audio playback is attempted through any
  30. audio card that uses DMA.  We have traced the problem to the 82C206 chip
  31. on the motherboard, most often (but not always) manufactured by OPTi.
  32. This is the device that houses the interrupt and DMA controllers, the
  33. counter/timers, and the real time clock.  Note that this isn't a global
  34. problem with these devices; there remains a larger number of systems
  35. operating perfectly that use the 82C206.  This may be related to a
  36. particlar lot of the 82C206, but we don't have enough information to know
  37. how widespread it may be.
  38.  
  39. Technically, the problem results from the /DMAMEMR pin of the 82C206 (pin 61,
  40. which is active low).  This pin drives the MEMORY READ line on the
  41. motherboard during DMA transfers from memory to I/O, which is the transfer
  42. mode used during audio playback.  This pin goes to a tri-state condition
  43. after the DMA cycle.  Apparently, on systems that exhibit this problem,
  44. the line remains at an active level too long when switching to the tri-state
  45. condition, which can cause a memory parity error to occur.
  46.  
  47. In theory, the simplest solution to the problem is to add a resistor to the
  48. motherboard to pull pin 61 hard to the off state (a resistor between 1K
  49. and 2K placed from pin 61 to +5V).  We have verified that this solves
  50. the problem, but it is far from practical in most situations.  This is
  51. not a recommended and Gravis will not be responsible for any damages.  Try
  52. it at your own risk.
  53.  
  54. There is one other solution that we have found to solve the problem.  We
  55. have discovered that re-configuring the DMA controller to temporarily disable
  56. the cascade channel during playback seems to eliminate the problem.  It must
  57. be noted that disabling cascade mode will also disable anything that uses DMA
  58. channels 0 through 3, which will usually include the floppy drives.  In
  59. most cases, this shouldn't be a problem, since audio playback from a floppy
  60. drive isn't practical.  It would, however, be a problem if there are
  61. background tasks that involve floppy access during playback.
  62.  
  63. In order to implement this fix, the following needs to be done:
  64. To disable cascade mode (prior to playback), send data 0 to address D6(hex).
  65.  
  66.    outportb(0xD6,0);
  67.  
  68. To re-enable cascade mode (after playback), send data C0(hex) to address
  69. D6(hex).  Using the toolkit definitions, this is:
  70.  
  71.    outportb(0xD6,0xC0);
  72.  
  73. You will find a program on the Gravis BBS (604) 431-5927 called OPTIFIX
  74. in the file GUS0013.ZIP which does do this.
  75.